package com.bsj.power.common.def.entity.gb28181;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.List;
import java.util.Map;

@Data
@TableName("tab_device")
public class Device {

    /**
     * 设备id
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 国标id
     */
    private String deviceId;

    /**
     * 设备名（协议）
     */
    private String name;

    /**
     * 生产厂商（协议）
     */
    private String manufacturer;

    /**
     * 型号（协议）
     */
    private String model;

    /**
     * 固件版本（协议）
     */
    private String firmware;

    /**
     * 传输协议
     * UDP/TCP
     */
    private String transport;

    /**
     * 数据流传输模式
     * UDP:udp传输
     * TCP-ACTIVE：tcp主动模式
     * TCP-PASSIVE：tcp被动模式
     */
    private String streamMode;

    /**
     * wan地址_ip
     */
    private String ip;

    /**
     * wan地址_port
     */
    private Integer port;

    /**
     * wan地址
     */
    private String hostAddress;

    /**
     * 在线1/离线0
     */
    private Integer online;

    /**
     * 注册时间
     */
    private String registerTime;

    /**
     * 创建时间-前端页面创建时间
     */
    private String createTime;

    /**
     * 更新时间
     */
    private String updateTime;

    /**
     * 通道个数
     */
    private Integer channelNumber;

    /**
     * 设备通道id，多个英文逗号隔开
     */
    private String channelIdStr;

    /**
     * 安装人员
     */
    private String installer;

    /**
     * 安装人员电话
     */
    private String installerPhone;

    /**
     * 安装位置
     */
    private String location;

    /**
     * 分辨率(1:QCIF,2:CIF,3:4CIF,4:D1,5:720P,6:1080P/I)
     */
    private Integer resolution;

    /**
     * 亮度低中高123
     */
    private Integer brightness;

    /**
     * 对比度低中高123
     */
    private Integer contrast;

    /**
     * 饱和度低中高123
     */
    private Integer saturation;

    /**
     * 设备别名
     */
    private String nickName;

    /**
     * 围栏id
     */
    private Integer pathId;

    /**
     * 场景id
     */
    private Integer sceneId;

    /**
     * 摄像头类型1球形摄像头2AI球形摄像头3网络摄像头4防爆球形摄像头
     */
    private Integer cameraType;

    /**
     * 三维位置点，json格式保存给前端使用
     */
    private String pointJson;

    /**
     * 场景名称
     */
    @TableField(exist = false)
    private String sceneName;

    /**
     * 云台是否锁定 0是未锁定 1是锁定
     */
    @TableField(exist = false)
    private Integer ptzControlLock;

    /**
     * 是否被关注0否1是
     */
    private Integer attention;

    /**
     * 摄像头关联房间号
     */
    private String roomNo;

    /**
     * 二维地图位置点
     */
    private String pointJson2d;

    /**
     * 楼层（0:室外;1:-9.5米;2:0米;3:7.5米;4:16米;5:23米）
     */
    private Integer floor;

    /**
     * 栋数（0是外围，1是1栋，2是2栋）
     */
    private Integer building;

    /**
     * 锁定云台的用户id
     * 谁锁定的，就是谁的用户id，不返回前端会报错，使用int，默认返回的0（没有id为0的用户）
     */
    @TableField(exist = false)
    private int lockUid;

    /**
     * 锁定云台的用户的权重，没锁定就返回-1，其他的按照用户云台的权重返回
     */
    @TableField(exist = false)
    private int lockedUserWeight = -1;

    /**
     * 设备通道map
     */
    @TableField(exist = false)
    private Map<String, DeviceChannel> deviceChannelMap;

    /**
     * 设备通道信息
     */
    @TableField(exist = false)
    private List<DeviceChannel> deviceChannels;

    /**
     * 设备编码
     */
    private String equipmentNumber;

}
